package com.etl.dataflow.common.collection.queue;

import java.util.Comparator;

/**
 * @author dx
 * @since 2022/6/21
 */
public interface PriorityQueue<E> {
    /**
     * 新元素入队
     *
     * @param e 新元素
     */
    void enqueue(E e, Comparator<E> keyComparator);

    /**
     * 元素出队
     *
     * @return 元素
     */
    E dequeue();

    /**
     * 获取位于队首的元素
     *
     * @return 队首的元素
     */
    E getFront();

    /**
     * 获取队列中的元素个数
     *
     * @return 元素个数
     */
    int getSize();

    /**
     * 队列是否为空
     *
     * @return 为空返回true，否则返回false
     */
    boolean isEmpty();

    /**
     * 删除元素
     *
     * @param e
     */
    void remove(E e, Comparator<E> comparator);
}
